package com.easylinkin.linkappapi.keywork.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.util.Date;

/**
 *
 * @author HuangLei
 * @since 2025-06-25
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("rail_safe_table")
public class SafeTable extends Model<SafeTable> {

    private static final long serialVersionUID = 1L;

    @TableId(type = IdType.AUTO)
    private Long id;

    @TableField("tenant_id")
    private String tenantId;

    /**
     * 网格id
     */
    @TableField("grid_id")
    private Long gridId;

    /**
     * 关联作业父类id
     */
    @TableField("keywork_parent_id")
    private Long keyworkParentId;
    /**
     * 关联作业id
     */
    @TableField("keywork_id")
    private Long keyworkId;
    /**
     * 安全确认表头
     */
    @TableField("table_title")
    private String tableTitle;

    /**
     * 安全确认表名
     */
    @TableField("table_name")
    private String tableName;

    /**
     * 备注
     */
    @TableField("remark")
    private String remark;

    /**
     * 检查意见：1同意，-1不同意，0未检查
     */
    @TableField("check_opinion")
    private Integer checkOpinion;

    /**
     * 表格状态：0协作中，1待签字，2已完成
     */
    @TableField("table_status")
    private Integer tableStatus;

    /**
     * 提交待签字时间
     */
    @TableField("pre_sign_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date preSignTime;


    /**
     * 检查确认时间
     */
    @TableField("check_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date checkTime;

    /**
     * 施工时间
     */
    @TableField("work_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date workTime;

    /**
     * 检查人
     */
    @TableField("check_user_id")
    private Long checkUserId;


    /**
     * 检查人签名附件
     */
    @TableField("check_user_sign")
    private String checkUserSign;

    /**
     * 创建人
     */
    @TableField("create_user_id")
    private Long createUserId;

    /**
     * 创建时间
     */
    @TableField("create_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;

    /**
     * 最近修改时间
     */
    @TableField("latest_modify_time")
    private Date latestModifyTime;


    @Override
    protected Serializable pkVal() {
        return this.id;
    }

}
